package com.situ.store.service.impl;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

import javax.servlet.http.HttpSession;

import com.situ.store.dao.OrderDao;
import com.situ.store.entity.Order;
import com.situ.store.entity.User;
import com.situ.store.service.OrderService;
import com.situ.store.util.StringUtil;
import com.situ.store.vo.DataVO;
import com.situ.store.vo.LayuiTableVO;
import com.situ.store.vo.OrderTVO;
import com.situ.store.vo.OrderVO;

public class OrderServiceImpl implements OrderService {

	OrderDao dao = new OrderDao();

	// 查所有
	@Override
	public List<OrderVO> selectAll(Integer page, Integer limit, String keyword, String date) {
		return dao.selectAll((page - 1) * limit, limit, keyword, date);
	}

	@Override
	public OrderVO selectById(Integer id) {
		return dao.selectById(id).get(0);
	}

	// 对应查所有的数量，用于分页
	@Override
	public Long count(String keyword, String date) {
		return dao.count(keyword, date);
	}

	// 删除
	@Override
	public void del(Integer id) {
		dao.del(id);
	}

	// 保存
	@Override
	public void save(OrderVO o, HttpSession session) {
		o.setOrTime(LocalDateTime.now());
		o.getCount().setScale(2, BigDecimal.ROUND_HALF_UP);
		Object obj = session.getAttribute("currentUser");
		User user = (User) obj;
		o.setOpName(user.getName());
		if (o.getId() == null) {
			dao.add(o);
		} else {
			dao.edit(o);
		}
	}

	// 模糊查询
	@Override
	public LayuiTableVO orderList(Integer page, Integer limit, String keyword, String date) {
		String[] s = StringUtil.insertEmpty(keyword, date);
		LayuiTableVO vo = new LayuiTableVO();
		vo.setData(selectAll(page, limit, s[0], s[1]));
		vo.setCount(count(s[0], s[1])); // 统计具体几条
		return vo;
	}

	// 统计出入库数量
	@Override
	public LayuiTableVO sum(String year, String month, String day) {
		List<Order> l = null;
		if (StringUtil.isNotNullAndNotEmpty(year)) {
			l = dao.sum(year);
		} else if (StringUtil.isNotNullAndNotEmpty(month)) {
			l = dao.sum(month);
		} else if (StringUtil.isNotNullAndNotEmpty(day)) {
			l = dao.sum(day);
		} else {
			l = dao.sum("");
		}
		LayuiTableVO vo = new LayuiTableVO();
		vo.setData(l);
		vo.setCount(100L);
		return vo;
	}


	// 按年统计
	@Override
	public List<DataVO> statisticsByYearIN(){
		return dao.statisticsByYearIN();
	}

	@Override
	public List<DataVO> statisticsByYearOUT(){
		return dao.statisticsByYearOUT();
	}


	public LayuiTableVO statisticsByYearInfo(String byYear){
		LayuiTableVO vo = new LayuiTableVO();
		List<OrderTVO> l = dao.statisticsByYearInfo(byYear);
		if (l != null) {
		    vo.setData(l);
		}
		return vo;
	}

	public LayuiTableVO statisticsByMonthInfo(String byMonth){
		LayuiTableVO vo = new LayuiTableVO();
		List<OrderTVO> l = dao.statisticsByMonthInfo(byMonth);
		if (l != null) {
			vo.setData(l);
		}
		return vo;
	}

	public LayuiTableVO statisticsByDayInfo(String byDay){
		LayuiTableVO vo = new LayuiTableVO();
		List<OrderTVO> l = dao.statisticsByDayInfo(byDay);
		if (l != null) {
			vo.setData(l);
		}
		return vo;
	}





}
